package com.huosu.commons.enums;

import com.google.common.collect.Lists;
import lombok.Getter;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 模式配置
 *
 * @author zhangjian
 * @since 2019-12-10
 */
@Getter
public enum SysPatternEnum {

    /**
     * 1监控模式
     */
    MONITOR_MODEL("monitor_model", "监控模式"),

    /**
     * 2消息提醒
     */
    MESSAGE_REMINDER("message_reminder", "消息提醒"),

    /**
     * 3聚合USD-CNY汇率
     */
    JUHE_RATE("juhe_rate", "聚合USD-CNY汇率"),

    /**
     * 4开机时间
     */
    UP_TIME("up_time", "开机时间"),

    /**
     * 5同步矿池地址时间
     */
    COMMAND_ADDRESS("command_poolAddress", "同步矿池地址时间"),

    /**
     * 6同步白名单时间
     */
    COMMAND_WHILELIST("command_whiteList", "同步白名单时间"),

    /**
     * 7同步分成地址时间
     */
    COMMAND_PROFIT("command_profit", "同步分成地址时间"),

    /**
     * 8同步分成比例时间
     */
    COMMAND_PROFITVAL("command_profitVal", "同步分成比例时间"),

    /**
     * 9同步病毒库时间
     */
    COMMAND_VIRUS("command_virus", "同步病毒库时间"),

    /**
     * 10同步币种时间
     */
    COMMAND_COIN("command_coin", "同步币种时间"),

    /**
     * 11本地同步配置excel时间
     */
    SYNC_EXCEL("sync_excel", "本地同步配置excel时间"),

    /**
     * 12本地同步工作模式时间
     */
    SYNC_WORKINGMODE("sync_workingMode", "本地同步工作模式时间"),

    /**
     * 13本地同步DNS时间
     */
    SYNC_DNSRULE("sync_dnsRule", "本地同步DNS时间"),

    /**
     * 14是否执行同步
     */
    SYNC_EXECUTE("sync_execute", "是否执行同步"),

    /**
     * MS配置参数同步时间
     */
    COMMAND_CONFIG("command_config", "MS配置参数同步时间"),

    /**
     * btc币价（美元）
     */
    BTC_PRICE("btc_price", "btc币价（美元）"),

    /**
     * btc日理论收益
     */
    BTC_PROFIT_DAY("btc_profit_day", "btc日理论收益"),

    /**
     * 设备UUID
     */
    DEVICE_NAME("device_name", "设备UUID"),

    /**
     * 设备密钥
     */
    DEVICE_SECRET("device_secret", "设备密钥"),

    /**
     * 矿机离线自动重启
     */
    AUTO_REBOOT("auto_reboot", "矿机离线自动重启"),

    /**
     * 矿机离线自动重启时间间隔
     */
    REBOOT_INTERVAL("reboot_interval", "矿机离线自动重启时间间隔"),

    /**
     * 矿机离线自动重启次数
     */
    REBOOT_COUNT("reboot_count", "矿机离线自动重启次数"),

    /**
     * 27数据清理标记
     */
    DATA_CLEAR("data_clear", "数据清理标记"),

    /**
     * 28 IP白名单
     */
    SYNC_IPFILTER("sync_ipFilter", "IP白名单"),

    /**
     * 29 自动检测升级开关
     */
    CHECK_UPGRADE("check_upgrade", "自动升级"),

    /**
     * 30 token密钥
     */
    TOKEN_SECRET("token_secret", "token密钥"),

    ;

    private String code;

    private String value;

    SysPatternEnum(String code, String value) {
        this.code = code;
        this.value = value;
    }

    public static List toList() {
        List list = Lists.newArrayList();
        for (SysPatternEnum stateEnum : SysPatternEnum.values()) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("code", stateEnum.getCode());
            map.put("value", stateEnum.getValue());
            list.add(map);
        }
        return list;
    }

    /**
     * 根据Key得到枚举的Value
     * Lambda表达式，比较判断（JDK 1.8）
     *
     * @param key
     * @return
     */
    public static SysPatternEnum getEnumType(Integer key) {
        return Arrays.asList(SysPatternEnum.values()).stream()
                .filter(e -> e.getCode().equals(key))
                .findFirst().orElse(null);
    }
}
